package ar.uade.distribuidas.tpo.dba.dominio;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import ar.uade.distribuidas.tpo.base.dominiodto.ItemSolicitudDeCotizacionDTO;

@Entity
@Table(name = "itemsSolicitudDeCotizaciones")
public class ItemSolicitudDeCotizacion {

	@Id
	private long id;
	@ManyToOne
	private Rodamiento rodamiento;
	private int cantidad;
	private float precio;
	
	public ItemSolicitudDeCotizacion() {
		super();
	}
	
	public ItemSolicitudDeCotizacion(long id, Rodamiento rodamiento, int cantidad, float precio) {
		super();
		this.id = id;
		this.rodamiento = rodamiento;
		this.cantidad = cantidad;
		this.precio = precio;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Rodamiento getRodamiento() {
		return rodamiento;
	}

	public void setRodamiento(Rodamiento rodamiento) {
		this.rodamiento = rodamiento;
	}

	public int getCantidad() {
		return cantidad;
	}

	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	public float getPrecio() {
		return precio;
	}

	public void setPrecio(float precio) {
		this.precio = precio;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + cantidad;
		result = prime * result + (int) (id ^ (id >>> 32));
		result = prime * result + Float.floatToIntBits(precio);
		result = prime * result + ((rodamiento == null) ? 0 : rodamiento.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ItemSolicitudDeCotizacion other = (ItemSolicitudDeCotizacion) obj;
		if (cantidad != other.cantidad)
			return false;
		if (id != other.id)
			return false;
		if (Float.floatToIntBits(precio) != Float.floatToIntBits(other.precio))
			return false;
		if (rodamiento == null) {
			if (other.rodamiento != null)
				return false;
		} else if (!rodamiento.equals(other.rodamiento))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "ItemSolicitudDeCotizacion [rodamiento=" + rodamiento + ", cantidad=" + cantidad + ", precio=" + precio + "]";
	}

	public static ItemSolicitudDeCotizacion fromDTO(ItemSolicitudDeCotizacion dto) {
		// TODO Auto-generated method stub
		return null;
	}

	public ItemSolicitudDeCotizacionDTO toDTO() {
		ItemSolicitudDeCotizacionDTO dto = new ItemSolicitudDeCotizacionDTO();

		dto.setRodamiento(rodamiento.getDTO());
		dto.setCantidad(cantidad);
		dto.setPrecio(precio);

		return dto;
	}

}
